Splice
对输入数据按给定上下文索引进行拼接操作,将多行特征数据按指定索引映射拼接到输出中。通常用于声学模型或时间序列模型的上下文扩展。
- 输入:
src_data - 输入数据地址。
src_row - 输入行数。
src_col - 输入列数。
dst_row - 输出行数。
dst_col - 输出列数。
context_dim - 上下文维度,即每行需要拼接的上下文数量。
forward_indexes - 上下文索引数组。
forward_indexes_dims - 上下文索引数组长度。
core_mask - 核掩码(仅适用于共享存储版本)。
- 输出:
dst_data - 拼接后的输出数据地址。
- 支持平台:
FT78NEMT7004
备注
FT78NE 支持fp, dp, int8, int16, int32, clx64, cplx128
MT7004 支持hp, fp, i16, i32, cplx64
共享存储版本:
-
void fp_splice_s(int src_row, int src_col, int dst_row, int dst_col, int context_dim, int forward_indexes_dims, int *forward_indexes, float *src_data, float *dst_data, int core_mask)
-
void hp_splice_s(int src_row, int src_col, int dst_row, int dst_col, int context_dim, int forward_indexes_dims, int *forward_indexes, half *src_data, half *dst_data, int core_mask)
-
void dp_splice_s(int src_row, int src_col, int dst_row, int dst_col, int context_dim, int forward_indexes_dims, int *forward_indexes, double *src_data, double *dst_data, int core_mask)
-
void i8_splice_s(int src_row, int src_col, int dst_row, int dst_col, int context_dim, int forward_indexes_dims, int *forward_indexes, int8_t *src_data, int8_t *dst_data, int core_mask)
-
void i16_splice_s(int src_row, int src_col, int dst_row, int dst_col, int context_dim, int forward_indexes_dims, int *forward_indexes, int16_t *src_data, int16_t *dst_data, int core_mask)
-
void i32_splice_s(int src_row, int src_col, int dst_row, int dst_col, int context_dim, int forward_indexes_dims, int *forward_indexes, int *src_data, int *dst_data, int core_mask)
-
void c64_splice_s(int src_row, int src_col, int dst_row, int dst_col, int context_dim, int forward_indexes_dims, int *forward_indexes, float *src_data, float *dst_data, int core_mask)
-
void c128_splice_s(int src_row, int src_col, int dst_row, int dst_col, int context_dim, int forward_indexes_dims, int *forward_indexes, double *src_data, double *dst_data, int core_mask)
C调用示例:
1#include <stdio.h>
2#include <splice.h>
3
4int main() {
5 float *input = (float *)0xA0000000; // 输入在DDR空间
6 float *output = (float *)0xC0000000;
7 int src_row = 100, src_col = 64;
8 int dst_row = 100, dst_col = 64*3;
9 int context_dim = 3;
10 int forward_indexes[300]; // 举例
11 int forward_indexes_dims = 300;
12 int core_mask = 0xff;
13
14 fp_splice_s(src_row, src_col, dst_row, dst_col, context_dim, forward_indexes_dims, forward_indexes, input, output, core_mask);
15 return 0;
16}
私有存储版本:
-
void fp_splice_p(int src_row, int src_col, int dst_row, int dst_col, int context_dim, int forward_indexes_dims, int *forward_indexes, float *src_data, float *dst_data)
-
void hp_splice_p(int src_row, int src_col, int dst_row, int dst_col, int context_dim, int forward_indexes_dims, int *forward_indexes, half *src_data, half *dst_data)
-
void dp_splice_p(int src_row, int src_col, int dst_row, int dst_col, int context_dim, int forward_indexes_dims, int *forward_indexes, double *src_data, double *dst_data)
-
void i8_splice_p(int src_row, int src_col, int dst_row, int dst_col, int context_dim, int forward_indexes_dims, int *forward_indexes, int8_t *src_data, int8_t *dst_data)
-
void i16_splice_p(int src_row, int src_col, int dst_row, int dst_col, int context_dim, int forward_indexes_dims, int *forward_indexes, int16_t *src_data, int16_t *dst_data)
-
void i32_splice_p(int src_row, int src_col, int dst_row, int dst_col, int context_dim, int forward_indexes_dims, int *forward_indexes, int *src_data, int *dst_data)
-
void c64_splice_p(int src_row, int src_col, int dst_row, int dst_col, int context_dim, int forward_indexes_dims, int *forward_indexes, float *src_data, float *dst_data)
-
void c128_splice_p(int src_row, int src_col, int dst_row, int dst_col, int context_dim, int forward_indexes_dims, int *forward_indexes, double *src_data, double *dst_data)
C调用示例:
1#include <stdio.h>
2#include <splice.h>
3
4int main() {
5 float *input = (float *)0x10810000; // 输入在L2空间
6 float *output = (float *)0x10820000;
7 int src_row = 100, src_col = 64;
8 int dst_row = 100, dst_col = 64*3;
9 int context_dim = 3;
10 int forward_indexes[300]; // 举例
11 int forward_indexes_dims = 300;
12
13 fp_splice_p(src_row, src_col, dst_row, dst_col, context_dim, forward_indexes_dims, forward_indexes, input, output);
14 return 0;
15}